#include"BlockQueue.hpp"
#include<iostream>
void* consumer(void* arg)
{
    BlockQueue<int> *bqueue=(BlockQueue<int> *)arg;
    while(true)
    {
        int x=0;
        bqueue->pop(&x);
        std::cout<<pthread_self()<<" -->获取数据： "<<x<<std::endl;
        sleep(1);
    }

    return nullptr;
}
void* product(void* arg)
{
    BlockQueue<int> *bqueue=(BlockQueue<int> *)arg;
    while(true)
    {
        int x=rand();
        bqueue->push(x);
        cout<<pthread_self()<<"-->输入数据："<<x<<endl;
        //sleep(2);
    }
    return nullptr;
}

int main()
{
    srand((uint64_t)time(nullptr) ^ getpid() ^ 0x32457);
    pthread_t tid1,tid2;
    BlockQueue<int> *bqueue=new BlockQueue<int>();
    pthread_create(&tid1,nullptr,consumer,bqueue);
    pthread_create(&tid2,nullptr,product,bqueue);

    pthread_join(tid1,nullptr);
    pthread_join(tid2,nullptr);
    delete bqueue;
    return 0;
}